#ifndef BONE_HPP
#define BONE_HPP
#include "GLHeaders.hpp"
#include "Model.hpp"
#include "Vector.hpp"

class Bone{
	public:
		int childNumber;
		Bone** child;
		Vector translation; // translation from parent's reference
		Vector rotation; // Axis of the rotation
		GLfloat angle; // Angle in degree
		Vector scale;
		Model* model; // 3D model call by the Draw function

	public:
		Bone(int nbChild);
		~Bone();
		void Draw(void);

		//Accessors
		int GetChildNumber(void) const;
		Vector GetTranslation(void) const;
		Vector GetRotation(void) const;
		GLfloat GetAngle(void) const;
		Vector GetScale(void) const;

		//Mutators
		void SetConnect(const int id,	Bone* b);
		void SetTranslation(
				const GLfloat fx,
				const GLfloat fy,
				const GLfloat fz);
		void SetTranslation(const Vector& vector);
		void SetRotation(
				const GLfloat fa,
				const GLfloat fx,
				const GLfloat fy,
				const GLfloat fz);
		void SetRotation(
				const GLfloat fx,
				const GLfloat fy,
				const GLfloat fz);
		void SetRotation(const Vector& vector);
		void SetAngle(const GLfloat fa);
		void SetScale(
				const GLfloat fx,
				const GLfloat fy,
				const GLfloat fz);
		void SetScale(const Vector& vector);
		void SetModel(Model* model3D);	
};

#endif
